iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
佛心分享-SideProject30

從0開始—初階程式語言學習者的必經之路系列 第 16

DAY16 熟悉 Java 中的面向對象編程概念—簡易銀行系統模擬

  • 分享至 

  • xImage
  •  

/掌握 Java 的面向對象編程(OOP)
/計算數據結構和算法。

目的:

/熟悉 Java 中的面向對象編程概念(如類、對象、繼承、多態)。
/理解和應用基本的數據結構(如數組、集合)。
/掌握基本的文件操作來保存和讀取數據。

程式設計:
設計並實現一個簡易銀行系統,該系統允許用戶創建帳戶、查詢餘額、存款、取款、以及查看交易記錄。

1. 設計類和數據結構:
1)設計 Account 類來表示銀行帳戶,包括帳戶號、持有人姓名、餘額等屬性,並提供存款、取款、查詢餘額等方法。
2)設計 Transaction 類來表示一次交易,包含交易類型、金額、時間等屬性。
3)設計 Bank 類來管理多個帳戶,並能夠查找、創建、刪除帳戶,以及保存和讀取帳戶信息。
2.編寫代碼:

import java.util.ArrayList;
import java.util.Scanner;
// 交易類
class Transaction {
private String type;
private double amount;
private String date;

public Transaction(String type, double amount, String date) {
    this.type = type;
    this.amount = amount;
    this.date = date;
}

@Override
public String toString() {
    return "交易類型:" + type + ", 金額:" + amount + ", 日期:" + date;
}

}

// 帳戶類
class Account {
private String accountNumber;
private String holderName;
private double balance;
private ArrayList transactions;

public Account(String accountNumber, String holderName) {
    this.accountNumber = accountNumber;
    this.holderName = holderName;
    this.balance = 0.0;
    this.transactions = new ArrayList<>();
}

public void deposit(double amount) {
    balance += amount;
    transactions.add(new Transaction("存款", amount, "2024-08-16"));
}

public void withdraw(double amount) {
    if (amount > balance) {
        System.out.println("餘額不足!");
    } else {
        balance -= amount;
        transactions.add(new Transaction("取款", amount, "2024-08-16"));
    }
}

public void checkBalance() {
    System.out.println("當前餘額:" + balance);
}

public void printTransactions() {
    for (Transaction transaction : transactions) {
        System.out.println(transaction);
    }
}

}

// 銀行類
class Bank {
private ArrayList accounts;

public Bank() {
    this.accounts = new ArrayList<>();
}

public void addAccount(String accountNumber, String holderName) {
    accounts.add(new Account(accountNumber, holderName));
}

public Account findAccount(String accountNumber) {
    for (Account account : accounts) {
        if (accountNumber.equals(accountNumber)) {
            return account;
        }
    }
    return null;
}

}

public class BankSystem {
public static void main(String[] args) {
Bank bank = new Bank();
Scanner scanner = new Scanner(System.in);

    // 示例操作
    bank.addAccount("123456", "張三");

    Account account = bank.findAccount("123456");
    if (account != null) {
        account.deposit(500.0);
        account.withdraw(200.0);
        account.checkBalance();
        account.printTransactions();
    }
}

}

3.擴展實驗
1)文件操作:增加將帳戶信息和交易記錄保存到文件中的功能,並能夠從文件中讀取這些信息。
2)異常處理:增加異常處理來處理用戶輸入錯誤或文件讀寫錯誤。
3)多線程:嘗試將銀行系統設計成支持多線程操作的模式,讓多個用戶可以同時訪問和操作銀行帳戶。
4)測試程序:
創建多個帳戶,進行各種操作並檢查結果是否符合預期。
測試在各種異常情況下(如餘額不足、無效帳戶號等)程序的表現。
測試文件讀寫功能,確認程序能夠正確保存和讀取帳戶信息。


上一篇
Day15技術補充—Markdown在不同程式語言的應用
下一篇
DAY17銀行系統延伸—如何使用Java處理多個帳戶
系列文
從0開始—初階程式語言學習者的必經之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言